#ifndef _WDS_ENEMY_COLLECTION_H_
#define _WDS_ENEMY_COLLECTION_H_

#include "ui/ui_manager.h"
#include "wds_enemy_manager.h"
#include "wds_enemy.h"

class WDSEnemyCollection
{
public:

	

	WDSEnemyCollection(WDSEnemy::ENEMY_TYPES Type,
						unsigned long NameCRC
						);
	~WDSEnemyCollection();


	void							RenderDecal(const math::Vec2& Offset,float Scale);
	void							RenderDead(const math::Vec2& Offset,float Scale);
	void							Render(const math::Vec2& Offset,float Scale);	
	void							RenderDebug(const math::Vec2& Offset,float Scale);
	void							RenderShadow(const math::Vec2& Offset, float Scale);
	void							Tick(float dt, float GameDifficulty, float PlayerReflex, const math::Vec2& Offset);


	void							Clear();
	//void							Spawn(const FIGLevel::EnemyInfo* pEnemyInfo );
	void							Spawn(	WDSEnemy::ENEMY_TYPES EnemyType, 
											WDSEnemy::ENEMY_SPAWN_TYPE SpawnType,
											const math::Vec2& Offset
											);

	WDSEnemy::ENEMY_TYPES			GetType()const { return m_Type; };
	unsigned long					GetNameCRC() const { return m_NameCRC; };
	int								GetCount()const { return m_Enemies.size(); };
	WDSEnemy*						GetEnemyByIndex(int Index);
	bool							HitTest(WDSBullet* pBullet);
	//WDSEnemy*						CreateEnemy(const FIGLevel::EnemyInfo* pEnemyInfo);
	WDSEnemy*						CreateEnemy(WDSEnemy::ENEMY_TYPES EnemyType);


protected:

	
	WDSEnemy::ENEMY_TYPES		m_Type;
	unsigned long				m_NameCRC;

	std::vector<WDSEnemy*>		m_Enemies;

};

#endif